;(async function () {
  // 1. 引入mongoose
  const mongoose = require('mongoose')

  // 2. 连接mongodb
  // 如果promise失败,就会抛出来一个错误,我们会使用trycatch捕获这个错误
  try {
    await mongoose.connect('mongodb://localhost:27017/web230202')
    console.log('数据库连接成功了')
  } catch (error) {
    console.log('数据库连接失败', error)
  }

  // 3. 创建schema
  const schema = new mongoose.Schema({
    goodName: {
      required: true, //当前属性必填
      type: String, // 商品名称必须是字符串
    },
    goodNum: {
      type: Number, // 商品名称必须是字符串
      default: 1,
    },
  })

  // 4. 创建model对象
  const model = mongoose.model('goods', schema)

  //   5. 查询goods集合中的所有数据
  // find方法不写回调返回值是promise.promise成功之后value的值就是查找到的数据
  //  find方法成功的promise的value值永远是数组,即便没有数组也是空数组
  //  findOne方法成功的promise的value值是符合条件的第一条数据对象,如果没有找到则返回一个null
  try {
    // const result = await model.find
    //   { goodNum: { $gt: 100 } },
    //   { goodName: 1, _id: 0 }
    // )
    // const result = await model.findOne(
    //   { goodNum: { $gt: 100 } },
    //   { goodName: 1, _id: 0 }
    // )
    // console.log(result)

    // await model.updateOne({ goodNum: { $gt: 1 } }, { $set: { goodName: 1 } })
    // await model.updateMany({ goodNum: { $gt: 1 } }, { $set: { goodName: 999 } })

    // await model.deleteOne({ goodNum: { $gt: 1 } })
    // await model.create({ goodName: '123', goodNum: 123 })
    await model.deleteMany({ goodNum: { $gt: 1 } })
    console.log('数据删除完毕')
  } catch (error) {
    console.log('查询数据失败', error)
  }
})()
